package com.ebt.m.wiki.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.ebt.m.R;

/**
 * 保险利益View
 *
 * @author Michael.li
 */
public class WikiTab2OptionView extends LinearLayout implements OnClickListener {

    /**
     * 默认类型
     **/
    public static final int TYPE_DEFAULT = 0;
    /**
     * 保障期间
     **/
    public static final int TYPE_POLICYTERM = 1;
    /**
     * 期交方式
     **/
    public static final int TYPE_PAYMENTMETHOD = 2;

    private TextView mTitle;
    private LinearLayout mScrollContainer;

    public WikiTab2OptionView(Context context) {
        this(context, null);
    }

    public WikiTab2OptionView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public WikiTab2OptionView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        inflate(context, getLayoutResource(), this);
        mTitle = (TextView) findViewById(R.id.wiki_option_title);
        mScrollContainer = (LinearLayout) findViewById(R.id.wiki_option_container);

    }

    public void scrollToAvailable() {
        HorizontalScrollView vv = (HorizontalScrollView) mScrollContainer.getParent();
        vv.smoothScrollTo(0, 0);
    }

    /**
     * layout id
     *
     * @return
     */
    protected int getLayoutResource() {
        return R.layout.wiki_view_tab2_option;
    }
    /**
     * 标题数量
     *
     * @return
     */
//	protected int getTitleEms() {
//		return 2;
//	}
    /**
     * 标题颜色
     *
     * @return
     */
//	protected int getTitleColor() {
//		return Color.BLACK;
//	}

    /**
     * 设置数据源
     *
     * @param title       标题
     * @param displays    可选集合
     * @param availables  可用集合
     * @param selectIndex 默认值
     * @param type        类型
     */
    public void setData(String title, String[] displays, int[] availables, int selectIndex, int type) {
        mScrollContainer.removeAllViews();
        mTitle.setText(title);
        for (int i = 0; i < availables.length; i++) {
//			int value = values[i];
            ProdcutOptionView view = getOptionView(type);
            if (i == selectIndex) {
                view.setState(ProdcutOptionView.STATE_SELECTED);
            } else {
                if (availables[i] == 1) {
                    view.setState(ProdcutOptionView.STATE_DEFAULT);
                } else {
                    view.setState(ProdcutOptionView.STATE_DISABLED);
                }
            }
//			view.setValue(value);
            view.setText(displays[i]);
            view.setOnClickListener(this);
            mScrollContainer.addView(view);
        }
    }

    /**
     * 设置可选的集合 不可选的为灰色背景
     *
     * @param values
     */
    // public void setOptionValues(int[] values)
    // {
    // // 默认选中第一个
    // boolean selected = false;
    // for (int i = 0, j = mScrollContainer.getChildCount(); i < j; i++) {
    // ProdcutOptionView view = (ProdcutOptionView)
    // mScrollContainer.getChildAt(i);
    // if (isEnabled(view.getValue(), values)) {
    // if (!selected) {
    // selected = true;
    // view.setState(ProdcutOptionView.STATE_SELECTED);
    // } else {
    // view.setState(ProdcutOptionView.STATE_DEFAULT);
    // }
    // } else {
    // view.setState(ProdcutOptionView.STATE_DISABLED);
    // }
    // }
    // }

    /**
     * 获取选中的值
     *
     * @return
     */
//	public int getSelectedValue() {
//		int value = 0;
//		for (int i = 0, j = mScrollContainer.getChildCount(); i < j; i++) {
//			ProdcutOptionView view = (ProdcutOptionView) mScrollContainer.getChildAt(i);
//			if (view.getState() == ProdcutOptionView.STATE_SELECTED) {
//				value = view.getValue();
//			}
//		}
//		return value;
//	}

    /**
     * 获取选中的索引
     *
     * @return
     */
    public int getSelectedIndex() {
        int index = 0;
        for (int i = 0, j = mScrollContainer.getChildCount(); i < j; i++) {
            ProdcutOptionView view = (ProdcutOptionView) mScrollContainer.getChildAt(i);
            if (view.getState() == ProdcutOptionView.STATE_SELECTED) {
                index = i;
                break;
            }
        }
        return index;
    }

    private String fieldName;

    public String getFieldName() {
        return fieldName;
    }

    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }

    /**
     * 该选项是否可用
     *
     * @param value
     * @param values
     * @return
     */
    public boolean isEnabled(int value, int[] values) {
        boolean enabled = false;
        for (int i = 0; i < values.length; i++) {
            if (value == values[i]) {
                enabled = true;
                break;
            }
        }
        return enabled;
    }

    @Override
    public void onClick(View v) {
        ProdcutOptionView view = (ProdcutOptionView) v;
        if (view.getState() == ProdcutOptionView.STATE_SELECTED)
            return;
        if (view.getState() == ProdcutOptionView.STATE_DISABLED)
            return;
        for (int i = 0, j = mScrollContainer.getChildCount(); i < j; i++) {
            view = (ProdcutOptionView) mScrollContainer.getChildAt(i);
            if (ProdcutOptionView.STATE_SELECTED == view.getState()) {
                view.setState(ProdcutOptionView.STATE_DEFAULT);
            }
        }
        view = (ProdcutOptionView) v;
        view.setState(ProdcutOptionView.STATE_SELECTED);
        if (mListener != null) {
            mListener.OnChecked(this);
        }
        // if (optionChangedListener != null) {
        // optionChangedListener.onOptionChanged(view.getValue());
        // }
    }

    protected ProdcutOptionView getOptionView(int type) {
//		switch (type) {
//		case TYPE_POLICYTERM:
//			return new PolicyTermView(getContext());
//		case TYPE_PAYMENTMETHOD:
//			return new PaymentMethodView(getContext());
//		default:
        return new ProdcutOptionView(getContext());
//		}
    }

    public interface OnCheckedListener {
        /**
         * 选项改变
         */
        void OnChecked(WikiTab2OptionView view);
    }

    private OnCheckedListener mListener;

    public void setOnCheckedListener(OnCheckedListener listener) {
        this.mListener = listener;
    }

    // public interface OnOptionChangedListener
    // {
    // /**
    // * 选项改变
    // *
    // * @param value
    // */
    // void onOptionChanged(int value);
    // }
    //
    // private OnOptionChangedListener optionChangedListener;
    //
    // public void setOnOptionChangedListener(OnOptionChangedListener
    // optionChangedListener)
    // {
    // this.optionChangedListener = optionChangedListener;
    // }

    /**
     * 保障期间
     *
     * @author Michael.li
     *
     */
//	private class PolicyTermView extends ProdcutOptionView {
//		public PolicyTermView(Context context) {
//			super(context);
//		}
//
//		@Override
//		protected String getText(int value) {
//			if (value == 0) {
//				return "终身";
//			} else if (value > 0) {
//				return value + "年";
//			} else {
//				return "至" + Math.abs(value) + "岁";
//			}
//		}
//	}
//
//	/**
//	 * 期交方式
//	 * 
//	 * @author Michael.li
//	 * 
//	 */
//	private class PaymentMethodView extends ProdcutOptionView {
//		public PaymentMethodView(Context context) {
//			super(context);
//		}
//
//		@Override
//		protected String getText(int value) {
//			switch (value) {
//			case 12:
//				return "年";
//			case 6:
//				return "半年";
//			case 3:
//				return "季交";
//			case 1:
//				return "月交";
//			default:
//				return "趸交";
//			}
//		}
//	}
}